<?php

//Hämtar in nödvändiga filer
require_once ("RegisterHandler.php");
require_once ("RegisterView.php");


	class RegisterController{
		
		public function doControl(Database $db){
			
			$rh = new RegisterHandler($db);
			$rv = new RegisterView();
			$pw = new PageView();
			$captcha = new Captcha();

			$body = $rv->DoMessageBox(RegisterView::INFO);
			
			//lagrar användarnamnet vid post-back
			$_SESSION[RegisterView::$temp_userName] = $rv->GetUserName();
			
			//Skriver ut ett Registerformulär
			$body .= $rv->DoRegisterBox($_SESSION[RegisterView::$temp_userName], $captcha->DoCaptchaView());
			
			if($rv->TriedToAbort()){
				return false;
			}			
			
			//Användaren vill registrera
			if($rv->TriedToRegister()){
				
				//Kallar på Valideraingsmetoden i Vyn som lämnar ifrån sig en array med eventuella felmedelanden
				$messageArray = $rv->Validate();
				
				//testar om användarnamnet är upptaget
				if(!$rh->UserNameCompare($rv->GetUserName())){
					$messageArray[] = RegisterView::USERNAME_TAKEN;	
				}
				
				//Kollar om Captcha-koden är korrekt
				if(!$captcha->CorrectCaptchaCode()){
					$messageArray[] = RegisterView::CAPTCHA_ERROR;
				}
				
				//Om arrayen med felmeddelanden är tom sparas användare				
				if($messageArray  == null){
						
					if($rh->SaveUser($rv->GetUserName(), $rv->GetPassword())){
						if (isset($_SESSION[RegisterView::$temp_userName])){
							unset($_SESSION[RegisterView::$temp_userName]);
						}
						return false;
					}					
					else{
						$body .= $rv->DoMessageBox(RegisterView::REGISTER_FAILED);						
					}
				}
				else{
					$body .= $rv->DoMessageBox(RegisterView::REGISTER_FAILED);
					$body .= $rv->DoMessageBox($messageArray);						
				}
			}
			
			return "<form method='post'>$body</form>";
		}
		
	}
